package com.cDesarrollador.dao;

import java.util.List;

import org.hibernate.SessionFactory;

import com.cDesarrollador.model.Categoria;
import com.cDesarrollador.model.Producto;
import com.cDesarrollador.model.Proveedor;

public class ProductoDao  implements IProductoDAO{
	
	private SessionFactory sessionFactory;
	 
	    /**
	     * Get Hibernate Session Factory
	     *
	     * @return SessionFactory - Hibernate Session Factory
	     */
	    public SessionFactory getSessionFactory() {
	        return sessionFactory;
	    }
	 
	    /**
	     * Set Hibernate Session Factory
	     *
	     * @param SessionFactory - Hibernate Session Factory
	     */
	    public void setSessionFactory(SessionFactory sessionFactory) {
	        this.sessionFactory = sessionFactory;
	    }
	 
	    /**
	     * Add Producto
	     *
	     * @param  Producto Producto
	     */
	   
	    public void addProducto(Producto Producto) {
	        getSessionFactory().getCurrentSession().save(Producto);
	    }
	 
	    /**
	     * Delete Producto
	     *
	     * @param  Producto Producto
	     */
	 
	    public void deleteProducto(Producto Producto) {
	        getSessionFactory().getCurrentSession().delete(Producto);
	    }
	 
	    /**
	     * Update Producto
	     *
	     * @param  Producto Producto
	     */
	   
	    public void updateProducto(Producto Producto) {
	        getSessionFactory().getCurrentSession().update(Producto);
	    }
	 
	    /**
	     * Get Producto
	     *
	     * @param  int Producto Id
	     * @return Producto
	     */
	   
	    public Producto getProductoById(int id) {
	        List list = getSessionFactory().getCurrentSession()
	                                            .createQuery("from Producto where id=?")
	                                            .setParameter(0, id).list();
	        return (Producto)list.get(0);
	    }
	 
	    /**
	     * Get Producto List
	     *
	     * @return List - Producto list
	     */
	   
	    public List<Producto> getProductos() {
	        List list = getSessionFactory().getCurrentSession().createQuery("from Producto").list();
	        return list;
	    }

		@Override
		public List<Producto> getProductoByCategoty(Categoria categoria) {
			  List list = getSessionFactory().getCurrentSession().createQuery("from Producto p where p.categoria =? ").setParameter(0, categoria).list();
		        return list;
		}
		
		 
		
		
		public List<Producto> getProductoByProveedor(Proveedor proveedor) {
			  List list = getSessionFactory().getCurrentSession().createQuery("from Producto p where p.proveedor =? ").setParameter(0, proveedor).list();
		        return list;
		}
		
}
